#include <stdio.h>

// 指针数组  本质是 数组  内部存储内容为指针
/*
    指针数组 

        数组在后面 则本质是数组
        指针在后面 则本质是指针

        指针在前面 则存储的内容为指针
        指针在后面 则指向的内容为 数组
*/
int main(int argc, char const *argv[])
{
    // ======================= 一级指针指向 一维数组 =======================
    int arr[5] = {1,2,3,4,5}; // 数组指针
    int * p  = arr;

    for (int i = 0; i < 5; i++)
    {
        printf("p[%d] = [%d]\n" , i , p[i]);
    }
    // ======================= 一级指针指向 二维数组 =======================
    int arr_1[3][4] =  
    {
        1,2,3,4,
        5,6,7,8,
        9,10,11,12
    };

    int (*ptr)[4] = arr_1; // 数组指针

    for (size_t i = 0; i < 3; i++)
    {
        for (size_t j = 0; j < 4; j++)
        {
            printf("ptr[%ld][%ld] = [%d]\t\t" , i , j , ptr[i][j]);
        }
        puts(" ");
    }
    // ======================= 二维指针数组 =======================
    char * User_Data[5][2] = 
    {
        {"账号:张三" , "密码:111"},
        {"账号:李四" , "密码:111"},
        {"账号:王五" , "密码:111"},
        {"账号:赵六" , "密码:111"},
        {"账号:钱七" , "密码:111"}
    };

    for (size_t i = 0; i < 5; i++)
    {
        printf("%s %s\n" , User_Data[i][0] , User_Data[i][1]);
    }

    // ======================= 一维指针数组 =======================
    char * User_Data_1[5] = 
    {
        "账号:张三",
        "账号:李四",
        "账号:王五",
        "账号:赵六",
        "账号:钱七"
    };
    for (size_t i = 0; i < 5; i++)
    {
        printf("%s\n" , User_Data_1[i]);
    }

    
    
    return 0;
}


